iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0

大家好!

文章到今天也快要寫一半了,謝謝各位的閱讀。
我們進入今天的主題吧!


控制物件

先建立一個物件並賦值:

let record = { name: null, test: true };

接下來的方法會有什麼差異呢?讓我們來看看:

Object.freeze

Object.freeze(record);
Object.isFrozen(record); // true

/* 更改屬性 ✗ */
record.name = 'Felix';
/* 新增屬性 ✗ */
record.date = '2021-09-29';
/* 刪除屬性 ✗ */
delete record.test; // false

record; // { name: null, test: true }

Object.preventExtensions

Object.preventExtensions(record);
Object.isExtensible(record); // true

/* 更改屬性 ✓ */
record.name = 'Felix';
/* 新增屬性 ✗ */
record.date = '2021-09-29';
/* 刪除屬性 ✓ */
delete record.test; // true

record; // { name: 'Felix' }

Object.seal

Object.seal(record);
Object.isSealed(record); // true

/* 更改屬性 ✓ */
record.name = 'Felix';
/* 新增屬性 ✗ */
record.date = '2021-09-29';
/* 刪除屬性 ✗ */
delete record.test; // false

record; // { name: 'Felix', test: true }

描述屬性

先來介紹屬性描述器的使用方法:

/* 下方屬性值皆為預設值 */
Object.defineProperty(object, property, {
    /* 屬性值 */
    value: undefined,
    /* 能否重新描述 */
    configurable: false,
    /* 能否被列舉 */
    enumerable: false,
    /* 能否更改屬性值 */
    writable: false,
    /* Getter */
    get: undefined,
    /* Setter */
    set: undefined
});

舉例一下:

let record = { name: 'Felix' };

Object.defineProperty(record, 'date', {
    value: '2021-09-29'
});

/* 更改屬性 ✗ */
record.date = null;
/* 刪除屬性 ✗ */
delete record.date; // false
/* 列舉屬性 ✗ */
for (let key in record) {
    console.log(key);
}
// Log: name

record; // { name: 'Felix', date: '2021-09-29' }

差不多也到尾聲了,接下來我們要介紹的是物件的 this 關鍵字。
如果對文章有任何疑問,也歡迎在下方提問和建議!
我是 Felix,我們明天再見!


上一篇
JS 13 - Getter & Setter
下一篇
JS 15 - this 關鍵字
系列文
JavaScript 從 50% 開始,打造函式庫不是問題!46
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言